partial class LBLD_DIGRAPH_INCL{NTP,NLB,ELB}
****
A mixin that associates labels with the nodes/edges of a graph


Flattened version is here

Descendants
LBLD_DIGRAPH{_,_,_} WTD_DIGRAPH{_,_}



Public


Features
stub add_node(n: NTP);
add_node(n: NTP,w: NLB)
**** Add the node "n" to the graph with the node label "w"
add_node(n: NTP,l: NLB): SAME
**** Version of "add_node" that returns self for convenience in chaining operations
stub add_node: NTP;
add_node_labelled(w: NLB): NTP
**** Add the node "n" to the graph with the node label "w"
are_all_edges_labelled: BOOL
**** Return true if all the edges in self are labelled
are_all_nodes_labelled: BOOL
**** Return true if all the nodes in self have a label
stub connect(n1,n2: NTP);
connect(n1,n2: NTP,w: ELB)
**** Add an edge from "n1" to "n2" with the edge label "w"
connect(s,d: NTP,l:ELB): SAME
**** Version of "connect" that returns self for convenience in chaining connections
edge_label(e:DIEDGE{NTP}): ELB
**** Return the edge label if it exists, void otherwise
has_edge_label(e:DIEDGE{NTP}): BOOL
has_node_label(n:NTP): BOOL
node_label(n:NTP): NLB
**** Return void if the node is not labelled
set_edge_label(e: DIEDGE{NTP},w: ELB)
**** Set the label of edge "e" to "w"
set_node_label(n: NTP,w: NLB)
**** Set the label of node "n" to "w"
str: STR
**** Print out the graph using the bound routine "f" for the nodes

Iters
edge!(out label: ELB): DIEDGE{NTP}
**** Yield successive edges and set the corresponding value of "label" to be the edge's label, or void otherwise
stub edge!: DIEDGE{NTP};
stub incoming!(n: NTP): NTP;
incoming!(once n: NTP, out a_node_label: NLB, out a_edge_label: ELB): NTP
**** Yield successive incoming nodes to node "n". Set the out parameter "a_node_label" to be the corresponding label of the incoming node and "a_edge_label" to be the label of the corresponding edge from the incoming node to "n"
node!(out label: NLB): NTP
**** Yield successive nodes and set the corresponding value of "label" to the node's label (or void, if it is not labelled)
stub node!: NTP;
stub outgoing!(n: NTP): NTP;
outgoing!(once n: NTP, out a_node_label: NLB, out a_edge_label: ELB): NTP
**** See incoming!


Private

attr edge_labels: MAP{DIEDGE{NTP},ELB};
attr edge_labels: MAP{DIEDGE{NTP},ELB};
init_labels
**** This routine initializes the label datastructures. Since this class is meant to be used by inclusion, this routine should be called after the class has been created
attr node_labels: MAP{NTP,NLB};
attr node_labels: MAP{NTP,NLB};
ob_str(n: $OB): STR

The Sather Home Page